/**
* 通用登出工具函数
*/

import { message } from 'antd'
import { logoutService } from '@/api/user'

/**
 * 执行登出操作
 * @param {Function} removeToken - 清除token的函数
 * @param {Function} setUserInfo - 设置用户信息的函数
 * @param {Function} callback - 登出成功后的回调函数
 */
export const performLogout = async (removeToken, setUserInfo, callback) => {
  try {
    // 先调用后端接口，确保数据清理成功
    const res = await logoutService()

    if (res.data.code === 200) {
      // 后端清理成功，再清除前端缓存
      removeToken()
      setUserInfo({
        userId: 0,
        username: '',
        phone: '',
        email: '',
        avatar: ''
      })

      message.success('退出登录成功')

      // 执行回调函数
      if (callback && typeof callback === 'function') {
        callback()
      }
    } else {
      message.error('退出登录失败，请重试')
    }
  } catch (error) {
    console.error('退出登录失败:', error)

    // 执行回调函数
    if (callback && typeof callback === 'function') {
      callback()
    }
  }
}
